# 导入第三方镜像用作模板
FROM golang:alpine

# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64

# 移动到工作目录：/build
WORKDIR /build

# 将当前目录下所有文件代码复制到容器中
COPY . .
# 将我们的代码编译成二进制可执行文件app，-o 是指定下 go build 后编译的二进制文件的名称， . 是当前目录 build 目录
RUN go build -o app .

# 移动到用于存放生成的二进制文件的 /dist 目录，也就是说切换到 dist 目录
WORKDIR /dist

# 将二进制文件从 /build 目录复制到这里，也就是说将/build/app 目录下的dist拷贝到 dist 目录
RUN cp /build/app .

# 声明服务端口
EXPOSE 8888

# 启动容器时运行的命令
CMD ["/dist/app"]

# 以上是在dockfile内编写，以下是终端中输入
# 在终端输入生成一个镜像命令：docker build . -t dockerfile_goweb_demo    dockerfile_goweb_demo为自定义项目名称
# 镜像启动命令：docker run -p 8888:8888 dockerfile_goweb_demo